{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 05 衡量回归算法的标准，MSE vs MAE"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn import datasets"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 波士顿房产数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "boston = datasets.load_boston()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "dict_keys(['data', 'target', 'feature_names', 'DESCR'])"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "boston.keys()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Boston House Prices dataset\n",
      "===========================\n",
      "\n",
      "Notes\n",
      "------\n",
      "Data Set Characteristics:  \n",
      "\n",
      "    :Number of Instances: 506 \n",
      "\n",
      "    :Number of Attributes: 13 numeric/categorical predictive\n",
      "    \n",
      "    :Median Value (attribute 14) is usually the target\n",
      "\n",
      "    :Attribute Information (in order):\n",
      "        - CRIM     per capita crime rate by town\n",
      "        - ZN       proportion of residential land zoned for lots over 25,000 sq.ft.\n",
      "        - INDUS    proportion of non-retail business acres per town\n",
      "        - CHAS     Charles River dummy variable (= 1 if tract bounds river; 0 otherwise)\n",
      "        - NOX      nitric oxides concentration (parts per 10 million)\n",
      "        - RM       average number of rooms per dwelling\n",
      "        - AGE      proportion of owner-occupied units built prior to 1940\n",
      "        - DIS      weighted distances to five Boston employment centres\n",
      "        - RAD      index of accessibility to radial highways\n",
      "        - TAX      full-value property-tax rate per $10,000\n",
      "        - PTRATIO  pupil-teacher ratio by town\n",
      "        - B        1000(Bk - 0.63)^2 where Bk is the proportion of blacks by town\n",
      "        - LSTAT    % lower status of the population\n",
      "        - MEDV     Median value of owner-occupied homes in $1000's\n",
      "\n",
      "    :Missing Attribute Values: None\n",
      "\n",
      "    :Creator: Harrison, D. and Rubinfeld, D.L.\n",
      "\n",
      "This is a copy of UCI ML housing dataset.\n",
      "http://archive.ics.uci.edu/ml/datasets/Housing\n",
      "\n",
      "\n",
      "This dataset was taken from the StatLib library which is maintained at Carnegie Mellon University.\n",
      "\n",
      "The Boston house-price data of Harrison, D. and Rubinfeld, D.L. 'Hedonic\n",
      "prices and the demand for clean air', J. Environ. Economics & Management,\n",
      "vol.5, 81-102, 1978.   Used in Belsley, Kuh & Welsch, 'Regression diagnostics\n",
      "...', Wiley, 1980.   N.B. Various transformations are used in the table on\n",
      "pages 244-261 of the latter.\n",
      "\n",
      "The Boston house-price data has been used in many machine learning papers that address regression\n",
      "problems.   \n",
      "     \n",
      "**References**\n",
      "\n",
      "   - Belsley, Kuh & Welsch, 'Regression diagnostics: Identifying Influential Data and Sources of Collinearity', Wiley, 1980. 244-261.\n",
      "   - Quinlan,R. (1993). Combining Instance-Based and Model-Based Learning. In Proceedings on the Tenth International Conference of Machine Learning, 236-243, University of Massachusetts, Amherst. Morgan Kaufmann.\n",
      "   - many more! (see http://archive.ics.uci.edu/ml/datasets/Housing)\n",
      "\n"
     ]
    }
   ],
   "source": [
    "print(boston.DESCR)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD',\n",
       "       'TAX', 'PTRATIO', 'B', 'LSTAT'], \n",
       "      dtype='<U7')"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "boston.feature_names"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "x = boston.data[:,5] # 只使用房间数量这个特征"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(506,)"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "y = boston.target"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(506,)"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x118557550>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(x, y)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "50.0"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.max(y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "x = x[y < 50.0]\n",
    "y = y[y < 50.0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(490,)"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(490,)"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n/j9948rMqi3spgAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x11b8e06d8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(x, y)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 使用简单线性回归法"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from playML.model_selection import train_test_split\n",
    "\n",
    "x_train, x_test, y_train, y_test = train_test_split(x, y, seed=666)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(392,)"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x_train.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(392,)"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_train.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(98,)"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x_test.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(98,)"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_test.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from playML.SimpleLinearRegression import SimpleLinearRegression"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "SimpleLinearRegression()"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "reg = SimpleLinearRegression()\n",
    "reg.fit(x_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "7.8608543562689555"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "reg.a_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "-27.459342806705543"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "reg.b_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x11ba27400>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(x_train, y_train)\n",
    "plt.plot(x_train, reg.predict(x_train), color='r')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nR/H8GryuAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x11bbe95f8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(x_train, y_train)\n",
    "plt.scatter(x_test, y_test, color=\"c\")\n",
    "plt.plot(x_train, reg.predict(x_train), color='r')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "y_predict = reg.predict(x_test)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### MSE"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "24.156602134387438"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mse_test = np.sum((y_predict - y_test)**2) / len(y_test)\n",
    "mse_test"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### RMSE"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4.914936635846635"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from math import sqrt\n",
    "\n",
    "rmse_test = sqrt(mse_test)\n",
    "rmse_test"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### MAE"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3.5430974409463873"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mae_test = np.sum(np.absolute(y_predict - y_test))/len(y_test)\n",
    "mae_test"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 封装我们自己的评测函数\n",
    "\n",
    "代码参见 [这里](playML/metrics.py)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from playML.metrics import mean_squared_error\n",
    "from playML.metrics import root_mean_squared_error\n",
    "from playML.metrics import mean_absolute_error"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "24.156602134387438"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mean_squared_error(y_test, y_predict)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4.914936635846635"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "root_mean_squared_error(y_test, y_predict)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3.5430974409463873"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mean_absolute_error(y_test, y_predict)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### scikit-learn中的MSE和MAE"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from sklearn.metrics import mean_squared_error\n",
    "from sklearn.metrics import mean_absolute_error"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "24.156602134387438"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mean_squared_error(y_test, y_predict)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3.5430974409463873"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mean_absolute_error(y_test, y_predict)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### MSE v.s. MAE"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
